#include<stdio.h>
int main(){
    int n,k,m;
  //先赋好值
    scanf("%d%d%d",&n,&k,&m);
  //n个人
    int p[n];
  //都先设置为1，在队中的状态
    for(int i=0;i<n;i++)
    {
        p[i]=1;
    }

  //队中尚存的人数
    int cnt_p=n;
  //点人的计数器
    int cnt_p1=1;
  //点人开始，退出循环时只剩一人。
    while(cnt_p>1)
    {
        // 这里我突然产生了疑惑:人数大于1时，如果p[k]也不为1,是不是会死循环？？？
        //从队中存在的人开始
        if(p[k] == 1)
        {
            //开始计数，到m退出
            while(cnt_p1<m)
            {
                k=(k+1)%n;              /*这样处理越界遍历问题？？？*/
                //存在的人才能计数
                if(p[k]==1)
                {
                    // 它遍历了很多次
                    // 利用布尔数组判断是否让计数器加加
                    cnt_p1++;
                }
            }

            //点到m个，此时k为出队人，设置出队状态
            p[k]=0;

            //队中人数减一
            cnt_p--;
            //再找下一个存在的人开始
            do{
                k=(k+1)%n;
            }while(p[k]==0);
            /*你别说，他还真能保证每一个p[k]都为1*/
            //此时k为下一个起始者
          //重置点人计数器
            cnt_p1=1;
        }
    }

    //遍历，输出？？？？？？？？？？那个存在的人
    for(int i=0;i<n;i++)
    {
        if(p[i]==1)
        {
            printf("%d",i);
        }
    }
}
